package com.liuqi.openai.tool;

import com.liuqi.openai.core.chat.Tool;
import java.util.Map;

/**
 * 用户自定义工具, 用于opanai tools 传参
 *
 * {@link #chatTool} opanai tools 的入参
 *
 * {@link #execute} 工具执行并返回工具执行结果
 *
 * @author liuqi
 * @date 2025/7/20
 **/
public interface CustomTool<T> {

    /**
     * 工具名称
     */
    String toolName();

    /**
     * openai tool
     */
    Tool chatTool();

    /**
     * 工具执行
     *
     * @param parameters openai 响应的入参
     * @param variables 变量数据
     */
    T execute(String parameters, Map<String, Object> variables) throws ToolExecuteException;

}
